package lexico;

public class ClasseNumero extends ClasseSimbolo
{
	public ClasseNumero(AnalisadorLexico analisador)
	{
		super(analisador);
	}

	@Override
	public boolean test(String simbolo)
	{
		String padrao = "^[-+]*?([0-9]+([0-9]*?|\\.?[0-9]+?))*?$";
		return simbolo.matches(padrao);
	}

	@Override
	public void ler(String ultimoSimbolo)
	{
		AnalisadorLexico analisador = getAnalisador();
		try
		{
			String tmp = ultimoSimbolo + analisador.readChar();
			while (test(tmp) || tmp.charAt(tmp.length() - 1) == '.')
			{
				ultimoSimbolo = tmp;
				tmp += analisador.readChar();
			}
		} catch (Exception e)
		{
			analisador.setFinal();
		}

		analisador.recuarLeitura();

		if (ultimoSimbolo.charAt(ultimoSimbolo.length() - 1) == '.')
		{
			ultimoSimbolo = ultimoSimbolo.substring(0, ultimoSimbolo.length() - 1);
			analisador.recuarLeitura();
		}

		analisador.addSimbolo(new Simbolo(ultimoSimbolo, Simbolo.NUMERO));
	}

}
